Всё решилось с помощью использования директивы.
Код получился примерно такой:
sb-input.js
(function () { 'use strict';
var sbInput = function () { return {
restrict: 'E',
scope: {
variable: '='
},
templateUrl: '/templates/sb-input.html',
link: function(scope) {
console.log(scope);
scope.up = function () { scope.variable.opt.value += scope.variable.opt.step; };
scope.down = function () { scope.variable.opt.value -= scope.variable.opt.step; };
}
};};
angular
.module('myApp')
.directive('sbInput', sbInput);
})();
sb-input.html
<div class="sb">
<div class="sb-arrow sb-up" ng-click="up()"><i class="fl-up-arrow"></i></div>
<input type="number" min="{{ variable.opt.min }}" max="{{ variable.opt.max }}" step="{{ variable.opt.step }}" ng-model="variable.opt.value">
<div class="sb-arrow sb-down" ng-click="down()"><i class="fl-down-arrow-2"></i></div>
</div>
Ну и пример вызова:
<sb-input variable="variable"></sb-input>