使用KO observable从资源文件连接值

时间:2017-05-20 15:08:21

标签: javascript html5 knockout.js

我必须将来自资源文件的连接值与KO可观察字符串进行字符串连接。 这是我试过的

enter image description here

但我收到错误消息

消息:未定义Office     at text(eval at parseBindingsString(knockout-3.4.0.js:68),:3:82)     在更新(knockout-3.4.0.js:98)     在function.a.B.i(knockout-3.4.0.js:72)     在Function.Pc(knockout-3.4.0.js:51)     在Function.Qc(knockout-3.4.0.js:51)     在Function.aa(knockout-3.4.0.js:50)     在Object.a.m.a.B(knockout-3.4.0.js:49)     在淘汰赛 - 3.4.0.js:72     在Object.q(knockout-3.4.0.js:11)     at m(knockout-3.4.0.js:71)

“未定义Office”这里Office是从@ Resources.Office的资源文件获得的值。

1 个答案:

答案 0 :(得分:1)

可以将资源文件传递给viewmodel吗?那么你应该有权访问它。在下面运行片段。



function model(Resources) {
  var self = this;
  this.Resources = ko.observable(Resources);
  this.foo = ko.observable({
    WorkPhone: true,
    CellPhone: false
  });
}

var Resources = {
  'Office': '222-2222',
  'OfficeMobile': '333-3333',
  'Home': '444-4444'
}
var mymodel = new model(Resources);

$(document).ready(function() {
  ko.applyBindings(mymodel);
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>

<div data-bind="with: foo">
  <span data-bind="text: $data.WorkPhone ? 
                        'Office: ' + $parent.Resources().Office + 
                        ' ,Office Mobile: ' + $parent.Resources().OfficeMobile
                        : 'Home: ' + $parent.Resources().Home"></span>
</div>
&#13;
&#13;
&#13;

虽然我同意Jose的观点,计算或纯计算可能是更好的方法。